package ObserverPractice;

import observe.ConcreteObserver;
import subject.ConcreteSubject;
import subject.Subject;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        //1、新建观察者
        ConcreteObserver o1 = new ConcreteObserver();
        ConcreteObserver o2 = new ConcreteObserver();
        o1.setStatus("o1 原始状态1");
        o1.setChoice(1);
        o2.setStatus("o2 原始状态2");
        o2.setChoice(0);
        //2、新建被观察对象
        Subject subject = new ConcreteSubject();
        //3、注册观察者
        subject.addObserver(o1);
        subject.addObserver(o2);

        System.out.println( o1 );
        System.out.println( o2 );
        //4、改变被观察者的状态-->>导致观察者状态也改变
        ((ConcreteSubject)subject).setStatus("你们的状态 都被我 改变了!");
        //5、改变后的状态
        System.out.println( o1 );
        System.out.println( o2 );


    }
}
